package Gather.ListLearn.ListTraverse;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class List遍历方法 {
    public static void main(String[] args) {
        /*
        List集合的五种遍历方式:
        1.迭代器
        2.列表迭代器
        3.增强for遍历
        4.lanbda表达式遍历
        5.普通for循环遍历
         */

        /*使用介绍:
        迭代器--------在遍历的过程需要删除元素
        列表迭代器-----在遍历的过程需要添加元素
        增强for遍历-----仅仅是遍历集合
        lanbda表达式遍历-----仅仅是遍历集合
        普通for循环遍历----遍历的时候想对索引进行操作
         */
        List<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");

        //1.迭代器
        System.out.println("=======迭代器遍历=======");
        //创建迭代器对象
        Iterator<String> it1=list.iterator();
        while(it1.hasNext()){
            String str=it1.next();
            System.out.println(str);
        }

        //2.列表迭代器
        //获取列表迭代器对象
        System.out.println("=======列表迭代器=======");
        ListIterator<String> it2=list.listIterator();
        while (it2.hasNext()){
            String str=it2.next();
            System.out.println(str);
        }

        //3.增强for遍历
        System.out.println("=======增强for遍历=======");
        for (String s : list) {
            System.out.println(s);
        }

        //4.lanbda表达式遍历
        System.out.println("=======lanbda表达式遍历=======");
//        list.forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        });
        list.forEach (s ->System.out.println(s));

        //5.普通for循环遍历
        System.out.println("=======普通for循环遍历=======");
        for (int i = 0; i < list.size(); i++) {
            String str=list.get(i);
            System.out.println(str);
        }
    }
}
